import { useAuthStore } from '../stores/auth'
import { ElMessage } from 'element-plus'

export default defineNuxtRouteMiddleware(async (to, from) => {
  const authStore = useAuthStore()
  
  // 如果是登录页面，且用户已登录，重定向到首页
  if (to.path === '/login') {
    if (authStore.isLoggedIn) {
      return navigateTo('/admin/')
    }
    return
  }
  
  // 检查用户是否已登录
  if (!authStore.isLoggedIn) {
    // 尝试从 cookie 初始化认证状态
    const result = await authStore.initAuth()
    
    if (!result.success) {
      // 保存当前路径，登录后跳转回来
      const redirectPath = to.fullPath !== '/login' ? to.fullPath : '/admin/'
      
      // 设置重定向路径到 cookie
      if (process.client) {
        document.cookie = `back_uri=${redirectPath}; path=/`
      }
      
      // 重定向到登录页面
      return navigateTo('/login')
    }
  }
  
  // 检查用户状态是否正常
  if (authStore.user && authStore.user.status !== 1) {
    // 用户被禁用，清除认证状态并重定向到登录页面
    await authStore.clearAuth()
    
    if (process.client) {
      ElMessage.error('用户账号已被禁用，请联系管理员')
    }
    
    return navigateTo('/login')
  }
})